package com.just.dom4j;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;

/**
 * 快速循环
 * 如果你需要遍历一个很大的xml文档，可以使用快速循环（递归）来改善性能
 * 避免为每一次循环都创建一个迭代器对象
 * PS：node和element的区别，node是一个结点，element是一个元素，元素必须包含完整信息，node范围大于element
 * 所以element一定是一个结点，而结点不一定是一个element
 */
public class TreeWalkXML {
    public static void main(String args[]){
        Document document=ParseXML.parse("D:\\ideaProjects\\dom4jdemo\\src\\main\\resources\\xml\\demo1.xml");
        new TreeWalkXML().treeWalk(document);
    }
   public void treeWalk(Document document){
       treeWalk(document.getRootElement());
   }
   public void treeWalk(Element element){
      for(int i=0;i<element.nodeCount();i++){
          Node node=element.node(i);
          if(node instanceof Element){
              System.out.println("元素名称："+node.getName());
              treeWalk((Element)node);
          }else{
              //do something
              System.out.println(node.asXML()+":node is not element");
          }
      }
   }
}
